Dart dart2native
dart2native 是一个命令行工具,用于将 Dart 源代码提前(AOT)编译为本地 x64 机器代码。该命令支持在 Windows、macOS 和 Linux 上运行。其输出可以是独立的可执行文件(默认)或者可以通过 Dart dartaotruntime 命令运行的 AOT 快照。
源码阅读
原理:该工具执行分为几个步骤:
- generateAotKernel:通过代码生成 Dart AOT Kernel 中间语法表示
- generateAotSnapshot:进一步生成 Dart AOT Snapshot
- 如果要生成 Dart aot-snapshot,到这一步就结束了
 
- 如果要生成 Dart exe,执行以下步骤:
- writeAppendedExecutable:输出最终的产物
- markExecutable:chmod 添加可运行权限
 
源码:
使用
编译独立可执行文件
使用 dart2native 创建独立可执行文件的示例:
$ dart2native bin/main.dart -o bin/my_app
您可以像其他可执行文件一样分发和运行该可执行文件。
编译 AOT 快照
要创建 AOT 快照,可以在命令中添加 -k aot:
$ dart2native bin/main.dart -k aot
然后可以使用 dartaotruntime 命令运行应用程序。
与 Dart compile aot-snapshot 关系
dart2native 和 Dart compile aot-snapshot 在功能上有一些相似之处,但也存在一些关键区别。
相似性:
- 目的:两者都用于将 Dart 源代码提前(AOT)编译为本地机器代码。
- 支持平台:两者都支持在 Windows、macOS 和 Linux 上运行。
区别:
- 输出类型:
- dart2native可以生成独立的可执行文件或 AOT 快照。独立可执行文件包括 Dart 文件及其依赖项的本地机器代码,以及一个小型 Dart 运行时。
- dart compile aot-snapshot专注于生成 AOT 快照,这是一种中间表示,可以与 Dart 运行时一起使用,但不包括完整的 Dart 运行时。
 
已知限制
- 无交叉编译支持
- 无签名支持
- 不支持 dart:mirrors和dart:developer
选项
- -D <key>=<value>或- --define=<key>=<value>:定义环境声明
- --enable-asserts:启用断言语句
- -h或- --help:显示所有选项的帮助
- -k (aot|exe)或- --output-kind=(aot|exe):指定输出类型
- -o <path>或- --output=<path>:生成输出到- <path>
- -v或- --verbose:显示更多信息
dart2aot
在 Dart 2.6 之前的版本包含了名为 dart2aot 的工具,用于生成 AOT 快照。dart2native 命令取代了 dart2aot,并具有 dart2aot 功能的超集。
本文作者:Maeiee
本文链接:Dart dart2native
版权声明:如无特别声明,本文即为原创文章,版权归 Maeiee 所有,未经允许不得转载!
喜欢我文章的朋友请随缘打赏,鼓励我创作更多更好的作品!
